package socker;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class ReceiveDemo {
    public static void main(String[] args) throws IOException {
        /*
        * 1.创建接收端Sorcket对象(DatagramSorckt)。
         2.创建数据包用于接收数据。
         3.调用DatagramSorckt方法接受数据。
         4.解析数据包并在控制台显示。
         5.关闭接收端。*/

        /*DatagramSocket(int port)
        构造数据报套接字并将其绑定到本地主机上的指定端口。*/
        DatagramSocket ds = new DatagramSocket(10000);

        // 创建数据包用于接收数据。
        /*DatagramPacket(byte[] buf, int length)
        构造一个 DatagramPacket用于接收长度的数据包 length 。 */
        byte[] bys = new byte[1024];
        DatagramPacket dp = new DatagramPacket(bys, bys.length);

        ds.receive(dp); // 接受数据

        // 解析数据包并在控制台显示。
        /*byte[] getData() 返回数据缓冲区。  */
        // 获取数据包bys中的所有内容，即使内容并没有把bys填满，该方法也会获取到bys后的空数据
        byte[] buf = dp.getData();
        int length = dp.getLength(); // 获取数据包中的实际长度，去除后面的空数据
        System.out.println(new String(buf, 0, length));

        ds.close();
    }
}
